--[[
描述 ： View视图文件
作者 ： 付大志
修改 ： xxs- android
时间 ： 14/12/01
]]


--[[
类 ： View视图类
]]
MLView = Class(MLPlugin,'MLView'); 
MLView.PointDown = 0;
MLView.PointUp = 1;
MLView.PointMove = 2;
MLView.PointCanCel = 3;
MLView.id         = nil;  --view 控件id 
MLView.viewCtrl   = nil; --view所在viewCtrl,采用弱引用 

MLView.mInstance  = nil;  -- 
MLView.mWidth     = nil;
MLView.mHeight    = nil;
MLView.mX         = nil;
MLView.mY         = nil;

MLView.mHidden    = nil;
MLView.mChilds    = nil;
MLView.mBgImg     = nil;
MLView.mGraphic   = nil;
MLView.mBgImg     = nil;
MLView.mHashcode  = nil;
MLView.mColor     = nil; 
MLView.mHashcode = nil;
--[[
功能：  触摸笔事件监听函数
参数：  eventType	事件类型
参数：  x	 x 坐标
参数：  y	y 坐标
返回：  是否拦截此事件 true：拦截 false：不拦截
注解：  上层可重写此方法，来监听此事件
用法：   if eventType == View.PointDown then .... end
]]
function qt_event_point(hashcode, e, x,y)
	if qtEvent[hashcode]~=nil then
		if qtEvent[hashcode].onPoint ~=nil then
			return qtEvent[hashcode].onPoint(e,x,y);
		else
			 if qtEvent[hashcode].onClick ~=nil then
			 	return true;
			 else
				return false;
			 end
		end
	end
end

--[[
功能：  触摸笔点击事件监听函数
参数：	无	
返回：   无
注解：	上层可重写此函数，来监听此事件
]] 
function qt_event_click(hashcode)
	if qtEvent[hashcode]~=nil then
		if qtEvent[hashcode].onClick ~=nil then
			qtEvent[hashcode].onClick();
		end
	end
end



function MLView:onCallBack(resultCode,arg) 
	if resultCode == 1 then 
		if self.onPoint ~=nil then 
			return self.onPoint(arg[1],arg[2],arg[3]);
		else 
			 if self.onClick ~=nil then
			 	return 1;
			 else
				return 0;
			 end
		end
	else
		if self.onClick ~=nil then
			self.onClick();
		end
	end
end
--[[
功能：   初始化 View实例 
参数：    w  视图宽度
参数：	 h  视图高度
参数：	 viewCtrl(可选)	view所在viewCtrl,采用弱引用
参数：	 id	(可选) view 控件id
返回：	 View实例 
]] 
function  MLView:initView(w,h,vc,id)
 	w =  w  or 0;
	h =  h or 0;  
	-- w = MLW(w);
	-- h = MLW(h); 
   self.mInstance  = MLViewGroup:new(w,h,"test");

	self.mWidth  = w;
	self.mHeight = h;
    self.mChilds = {};
    self.mHashcode = self.mInstance:groupGetHashcode();
    qtEvent[self.mHashcode]=self;
    self.mGraphic = MLGraphics.new():initGraphics(self.mInstance);
    self.mInstance:groupSetDrawCell(self.mGraphic.mInstance);
    self.weekTable.mParent=nil;
       self.id = id;
    if vc then
       vc:addView(self);   -- 添加缓存
    end
    self.mAllView= {}
    return self;
end 


--[[
功能：   得到视图高宽 
参数：   无
返回：   宽度 高度
]] 
function  MLView:getWH()
	return self.mWidth, self.mHeight;
end 

--[[
功能：   设置视图高宽 
参数：   w宽度 
参数：   h高度
返回：   无
]] 
function  MLView:setWH(w,h)
	local ow, oh = self:getWH();
	w = w or ow; h = h or oh;
	self.mWidth = w;
	self.mHeight = h;
	self.mInstance:groupSetWH(w, h)
end 

--[[
功能：   得到X、Y坐标 
参数：   无
返回：   x坐标 y坐标
]] 
function  MLView:getXY()
	return self.mX, self.mY;
end

--[[
功能：   设置X、Y坐标 
参数：   x坐标 
参数：   y坐标
返回：   无
]] 
function  MLView:setXY(x,y)
	local ox, oy = self:getXY();
	x = x or ox; y = y or oy; 
	self.mX = x;
	self.mY = y; 
	self.mInstance:groupSetXY(x,y);
end

--[[
功能：   设置隐藏状态 
参数：   hidden ：true隐藏 false 显示
返回：   无
]] 
function  MLView:setHidden(hidden)
	if   hidden ==nil then return end;

	self.mInstance:groupSetHidden(hidden)
	self.mHidden = hidden;
end

--[[
功能：   获得隐藏状态 
参数：   无
返回：   true隐藏 false 显示
]] 
function  MLView:getHidden()
	return self.mHidden;
end

--[[
功能：   获得父视图 
参数：   无
返回：   父视图
]] 
function  MLView:getParent()
    return self.weekTable.mParent;
end

--[[
功能：   添加子视图 
参数：   view	需要添加视图
参数：   相对父视图坐标x 
参数：   相对父视图坐标y
参数：   index 索引值
返回：   无
注解：   index 遵循lua索引规则 以1为开始
		index 为 nil 系统自动添加到最后视图
		x 为 nil 默认为0
		y 为 nil 默认为0
]] 
function  MLView:add(view,x,y)
	if view == nil then return end
    if view.weekTable.mParent then
        view.weekTable.mParent:del(view);
    end
	view.mX, view.mY =  x or 0, y or 0;
 --    view.mX = MLW(view.mX);
	-- view.mY = MLH(view.mY); 
	view.weekTable.mParent = self;
	local index = self.mInstance:groupAddChild(view.mInstance,-1,view.mX, view.mY ) 
	if self.mChilds == nil then

	 self.mChilds = {}; 
	end
	table.insert(self.mChilds, index, view);

    self.mAllView[#self.mAllView+1] = view;

end


--[[
功能：   删除指定视图 
参数：   view	需要删除的视图
返回：	无
]]
function  MLView:del(view)
	if not  view then return end 
	local index = self.mInstance:groupDelChild(view.mInstance)
	table.remove(self.mChilds, index);
    view.weekTable.mParent = nil;
    view.mChilds = {};
end

--[[
功能：   删除所有视图 
参数：   无
返回：	无
]]
function  MLView:delAll()
	self.mChilds = {};
	self.mInstance:groupDelAll();
end

--[[
功能：   根据index得到子view
参数：	index	索引
返回：	无
]]     
function  MLView:getViewOfIndex (index)	
	if not index then return end
	return self.mChilds[index];
end

--[[
功能：   根据子view 得到index
参数：	view	子视图
返回：	索引
]]     
function  MLView:getIndexOfView (view)	
	if not view then return end
	for k, v in ipairs(self.mChilds) do
		if v == view then
			return k;
		end
	end
end

--[[
功能：  设置背景图片
参数：	image	图片
返回：	无
]]
function  MLView:setBg(image)
	if not  image then return end; 
	self.mBgImg = image;
	self.mInstance:groupSetBgImg(image.mInstance);
end	

--[[
功能：   设置背景颜色
参数：	color	颜色 16进制 如：oxff0000 红色
返回：	无
]]
function  MLView:setColor	(color)	
	if not color then return end
	self.mColor = color;
	self.mInstance:groupSetBgColor(color);
end	

--[[
功能：   设置透明度
参数：	value	透明值 0 - 1
返回：	无
]]
function  MLView:setAlpha	(value)
	if not value then return end
	self.mInstance:groupSetAlpha(value); 
end		


--[[
功能：   设置视图缩放
参数：   sx	x轴缩放因子 0-1
参数：   sy	y轴缩放因子 0-1
返回：	无
]]
function  MLView:setScale (sx,  sy)
     sx = sx or 1;
      sy = sy or 1;  
	   self.mInstance:groupSetScale(sx, sy); 
   
end		

--[[
功能：   设置旋转角度
参数：   angle	0 -360 度
返回：	无
]]
function  MLView:setRotate (angle)
	self.mInstance:groupSetRotate(angle);
end		


--[[
功能：   得到视图画笔实例
参数：	无	
返回：	视图画笔实例
]]
function  MLView:getGraphic ()
    return self.mGraphic;
end	




 
--[[
功能：  控件 被恢复 状态监听函数
参数：  无	
返回：  无
注解：  上层可重写此函数，来监听此事件
        由于现在窗子切换会删除里面的view， 待窗体返回时在恢复控件数据
]]
function  MLView:onResume ()	
	-- body
end


--[[
功能：  控件 被销毁 状态监听函数
参数：  无	
返回：  无
注解：  上层可重写此函数，来监听此事件
]]
function  MLView:onDestroy ()	
	-- body
end

 